Kullanım
Temel Örnek
import Trustchex from '@trustchex/react-native-sdk';
<Trustchex
baseUrl="https://your-api.com"
sessionId="session-123"
onCompleted={() => console.log('Tamamlandı')}
onError={(error) => console.error(error)}
/>
Özellikler
| Özellik | Tip | Zorunlu | Açıklama |
|---|---|---|---|
baseUrl | string | ✅ | API temel URL'si |
sessionId | string | ❌ | Oturum tanımlayıcısı |
branding | object | ❌ | Renkler ve logo |
locale | 'en' | 'tr' | ❌ | Dil |
onCompleted | () => void | ❌ | Başarı geri çağırma |
onError | (error) => void | ❌ | Hata geri çağırma |
onDocumentRead | (result: DocumentReadResult) => void | ❌ | Belge okunduğunda çağrılır (NFC veya OCR) |
Belge Okuma Olayı
onDocumentRead geri çağırması, belge verisi mevcut olur olmaz tetiklenir — başarılı bir NFC çip okumasından veya başarılı bir kamera OCR taramasından hemen sonra. Kaynaktan bağımsız olarak birleşik bir DocumentReadResult nesnesi alır.
import Trustchex, { type DocumentReadResult } from '@trustchex/react-native-sdk';
<Trustchex
baseUrl="https://your-api.com"
sessionId="session-123"
onDocumentRead={(result: DocumentReadResult) => {
const { document } = result;
console.log(document.documentType); // "P" (pasaport) | "I" (kimlik kartı)
console.log(document.issuingCountry); // "DEU"
console.log(document.nationality); // "DEU"
console.log(document.documentNumber); // "C01X00T478"
console.log(document.personalNumber); // "8512310074" | null
console.log(document.lastName); // "MÜLLER"
console.log(document.firstName); // "JÜRGEN KARL"
console.log(document.sex); // "M" | "F" | "X" | "U"
console.log(document.dateOfBirth); // "1985-03-10" (ISO 8601)
console.log(document.dateOfExpiry); // "2030-11-05" (ISO 8601)
}}
onCompleted={() => console.log('Done')}
onError={(error) => console.error(error)}
/>
DocumentReadResult
interface DocumentReadResult {
document: {
documentType: string; // "P" (passport) | "I" (ID card)
issuingCountry: string; // 3-letter ICAO country code, e.g. "TUR"
nationality: string;
documentNumber: string;
personalNumber: string | null;
lastName: string; // Best available name, e.g. "MÜLLER"
firstName: string; // Best available name, e.g. "JÜRGEN"
sex: 'M' | 'F' | 'X' | 'U';
dateOfBirth: string | null; // ISO 8601, e.g. "1990-05-15"
dateOfExpiry: string | null; // ISO 8601, e.g. "2028-03-01"
};
name: {
rawLast: string; // MRZ ASCII surname
rawFirst: string; // MRZ ASCII given name
displayLast: string; // Best Unicode form, e.g. "SAYGI"
displayFirst: string; // Best Unicode form, e.g. "SELİM"
source: 'dg11' | 'reverse_table' | 'raw';
};
face?: {
data: string; // Base64-encoded image
mimeType: string; // e.g. "image/jpeg"
};
}
İsim Kaynakları
| Kaynak | Açıklama |
|---|---|
dg11 | NFC çipindeki DG11 dosyasından okunan tam basılı isim (UTF-8). En yüksek doğruluk. |
reverse_table | ICAO 9303 ters transliterasyon tablosu ile yeniden oluşturuldu (ör. OE→Ö, UE→Ü). Bilinen ülkeler için uygulanır. |
raw | Dönüşüm yapılmadı — görüntülenen isim ham MRZ ASCII değeriyle aynı. |
Markalaşma ile
<Trustchex
baseUrl="https://your-api.com"
sessionId="session-123"
branding={{
logoUrl: 'https://your-logo.png',
primaryColor: '#1E40AF',
secondaryColor: '#F8FAFC',
tertiaryColor: '#DC2626'
}}
locale="tr"
onCompleted={() => console.log('Tamamlandı')}
/>
Derin Bağlantılar (İsteğe Bağlı)
Derin bağlantı işlevselliği, bağımsız bir uygulama yayınlamak istiyorsanız isteğe bağlı bir özelliktir. SDK ile derin bağlantıları işlemek için uygulamanızda derin bağlantıları yapılandırmanız ve gelen URL'leri işlemek için gerekli hook'ları kurmanız gerekir.
1. Derin Bağlantı Şemalarını Yapılandırın
iOS - Info.plist dosyasına ekleyin:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>yourapp</string>
</array>
</dict>
</array>
Android - AndroidManifest.xml dosyasına ekleyin:
<activity android:name=".MainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="yourapp" />
</intent-filter>
</activity>
2. Derin Bağlantı İşlemeyi Kurun
Gelen URL'leri işlemek için handleDeepLink fonksiyonunu import edin ve kullanın:
import React from 'react';
import { AppState, Linking } from 'react-native';
import Trustchex, { handleDeepLink } from '@trustchex/react-native-sdk';
const App = () => {
const [baseUrl, setBaseUrl] = React.useState<string | undefined>();
const [sessionId, setSessionId] = React.useState<string>('');
React.useEffect(() => {
const handleInitialDeepLink = async () => {
const url = await Linking.getInitialURL();
if (url) {
const [bUrl, sId] = handleDeepLink({ url });
if (bUrl && sId) {
setBaseUrl(bUrl);
setSessionId(sId);
}
}
};
const handleIncomingLink = ({ url }: { url: string }) => {
const [bUrl, sId] = handleDeepLink({ url });
if (bUrl && sId) {
setBaseUrl(bUrl);
setSessionId(sId);
}
};
Linking.addEventListener('url', handleIncomingLink);
handleInitialDeepLink();
const subscription = AppState.addEventListener('change', (nextAppState) => {
handleInitialDeepLink();
});
return () => {
Linking.removeAllListeners('url');
subscription.remove();
};
}, []);
return (
<Trustchex
baseUrl={baseUrl}
sessionId={sessionId}
onCompleted={() => console.log('Tamamlandı')}
onError={(error) => console.error(error)}
/>
);
};
handleDeepLink fonksiyonu şu formattaki URL'leri ayrıştırır:
scheme://app-url/your-api.com/verification-session/session-123
Ve Trustchex bileşeni ile kullanabileceğiniz [baseUrl, sessionId] döndürür.
Oturumlar
REST API kullanarak oturumlar oluşturun.
Oturum Erişim Yöntemleri
SDK, kullanıcıların doğrulama oturumlarına erişmeleri için birden fazla yol sağlar: